package com.urbane.generator.controller;

import com.urbane.generator.entity.GenTable;
import com.urbane.generator.service.GenTableService;
import jakarta.annotation.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/gen-table") // 定义该 Controller 的根路径为 /api/gen-table
public class GenTableController {

    @Resource
    private GenTableService genTableService; // 注入 GenTableService，用于处理业务逻辑

    /**
     * 查询所有表信息
     *
     * @return 所有表信息列表
     */
    @GetMapping("/list")
    public ResponseEntity<List<GenTable>> list() {
        return ResponseEntity.ok(genTableService.list()); // 调用 Service 层方法获取所有表信息并返回
    }

    /**
     * 根据 ID 查询表信息
     *
     * @param id 表的主键 ID
     * @return 单个表信息对象
     */
    @GetMapping("/{id}")
    public ResponseEntity<GenTable> getById(@PathVariable Long id) {
        return ResponseEntity.ok(genTableService.getById(id)); // 根据 ID 获取表信息并返回
    }

    /**
     * 新增表信息
     *
     * @param genTable 表信息对象
     * @return 操作结果（成功或失败）
     */
    @PostMapping("/save")
    public ResponseEntity<String> save(@RequestBody GenTable genTable) {
        boolean result = genTableService.save(genTable); // 调用 Service 层方法保存表信息
        return result ? ResponseEntity.ok("保存成功") : ResponseEntity.status(500).body("保存失败");
    }

    /**
     * 更新表信息
     *
     * @param genTable 表信息对象
     * @return 操作结果（成功或失败）
     */
    @PutMapping("/update")
    public ResponseEntity<String> update(@RequestBody GenTable genTable) {
        boolean result = genTableService.updateById(genTable); // 调用 Service 层方法更新表信息
        return result ? ResponseEntity.ok("更新成功") : ResponseEntity.status(500).body("更新失败");
    }

    /**
     * 删除表信息
     *
     * @param id 表的主键 ID
     * @return 操作结果（成功或失败）
     */
    @DeleteMapping("/{id}")
    public ResponseEntity<String> delete(@PathVariable Long id) {
        boolean result = genTableService.removeById(id); // 调用 Service 层方法删除表信息
        return result ? ResponseEntity.ok("删除成功") : ResponseEntity.status(500).body("删除失败");
    }
}